package com.wsoft.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wsoft.system.entity.SysOrganizationEntity;
import com.wsoft.system.query.org.OrgInsertQuery;
import com.wsoft.system.query.org.OrgListQuery;
import com.wsoft.system.query.org.OrgUpdateQuery;
import com.wsoft.vo.SysOrganizationVO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zhonglj
 * @since 2024年09月06日 14:10:29
 */
public interface ISysOrganizationService extends IService<SysOrganizationEntity> {

    /**
     * 缓存获取所有的组织数据
     *
     * @param
     * @return java.util.List<com.wsoft.system.entity.SysOrganizationEntity>
     * @author zhonglj
     * @date 2024-09-07 13:04
     **/
    List<SysOrganizationEntity> listAllOrgWithCache();

    /**
     * 条件查询组织数据
     *
     * @param memberId
     * @return java.util.List<com.wsoft.system.entity.SysOrganizationEntity>
     * @author zhonglj
     * @date 2024-09-07 14:30
     **/
    List<SysOrganizationEntity> selectOrgBy(Long memberId);

    /**
     * 新增组织
     * @param dto
     * @return dto
     */
    boolean insert(OrgInsertQuery dto);

    /**
     * 修改组织
     * @param dto
     * @return OrgUpdateQuery dto
     */
    boolean update(OrgUpdateQuery dto);

    /**
     * 根据ID获取组织详情
     * @param id
     * @return SysOrganizationEntity
     */
    SysOrganizationEntity getOrgById(Long id);

    /**
     * 根据ID删除组织
     * @param id
     * @return boolean
     */

    boolean delete(Long id);

    /**
     * 获取组织列表
     * @param query
     * @return List<SysOrganizationEntity>
     */
    List<SysOrganizationEntity> getOrgList(OrgListQuery query);

    /**
     * 获取组织树
     * @return List<SysOrganizationVO>
     */
    List<SysOrganizationVO> selectOrgListTree();

}
